package dao

import (
	"time"
)

// 这是 SmsCoupon 的全局公开dao对象，被service层调用!
var SmsCouponDao = smsCouponDao{}

// 这是 sms_coupon表 的实体类
type SmsCoupon struct {
	Id           int64     `json:"id"`
	Types        int32     `json:"types"` // 优惠券类型；0-&gt;全场赠券；1-&gt;会员赠券；2-&gt;购物赠券；3-&gt;注册赠券
	Name         string    `json:"name"`
	Platform     int32     `json:"platform"`  // 使用平台：0-&gt;全部；1-&gt;移动；2-&gt;PC
	Count        int32     `json:"count"`     // 数量
	Amount       float64   `json:"amount"`    // 金额
	PerLimit     int32     `json:"per_limit"` // 每人限领张数
	MinPoint     float64   `json:"min_point"` // 使用门槛；0表示无门槛
	StartTime    time.Time `json:"start_time"`
	EndTime      time.Time `json:"end_time"`
	UseType      int32     `json:"use_type"`      // 使用类型：0-&gt;全场通用；1-&gt;指定分类；2-&gt;指定商品
	Note         string    `json:"note"`          // 备注
	PublishCount int32     `json:"publish_count"` // 发行数量
	UseCount     int32     `json:"use_count"`     // 已使用数量
	ReceiveCount int32     `json:"receive_count"` // 领取数量
	EnableTime   time.Time `json:"enable_time"`   // 可以领取的日期
	Code         string    `json:"code"`          // 优惠码
	MemberLevel  int32     `json:"member_level"`  // 可领取的会员类型：0-&gt;无限时
}

// 注意:这是 SmsCoupon 的私有dao对象，只能在dao层内使用!
type smsCouponDao struct {
	Insert     func(arg SmsCouponParam) (int64, error)
	DeleteById func(id int64) (int64, error) `args:"id"`
	UpdateById func(arg SmsCouponParam) (int64, error)
	SelectById func(id int64) (SmsCouponParam, error)       `args:"id"`
	List       func(arg SmsCouponList) ([]SmsCoupon, error) //根据优惠券名称和类型分页获取优惠券列表
}

// 添加优惠券
type SmsCouponParam struct {
	Id                               int64     `json:"id"`
	Types                            int32     `json:"types"` // 优惠券类型；0-&gt;全场赠券；1-&gt;会员赠券；2-&gt;购物赠券；3-&gt;注册赠券
	Name                             string    `json:"name"`
	Platform                         int32     `json:"platform"`  // 使用平台：0-&gt;全部；1-&gt;移动；2-&gt;PC
	Count                            int32     `json:"count"`     // 数量
	Amount                           float64   `json:"amount"`    // 金额
	PerLimit                         int32     `json:"per_limit"` // 每人限领张数
	MinPoint                         float64   `json:"min_point"` // 使用门槛；0表示无门槛
	StartTime                        time.Time `json:"start_time"`
	EndTime                          time.Time `json:"end_time"`
	UseType                          int32     `json:"use_type"`      // 使用类型：0-&gt;全场通用；1-&gt;指定分类；2-&gt;指定商品
	Note                             string    `json:"note"`          // 备注
	PublishCount                     int32     `json:"publish_count"` // 发行数量
	UseCount                         int32     `json:"use_count"`     // 已使用数量
	ReceiveCount                     int32     `json:"receive_count"` // 领取数量
	EnableTime                       time.Time `json:"enable_time"`   // 可以领取的日期
	Code                             string    `json:"code"`          // 优惠码
	MemberLevel                      int32     `json:"member_level"`  // 可领取的会员类型：0-&gt;无限时
	SmsCouponProductRelation         []SmsCouponProductRelation
	SmsCouponProductCategoryRelation []SmsCouponProductCategoryRelation
}

//根据优惠券名称和类型分页获取优惠券列表
type SmsCouponList struct {
	Name     string `json:"name" form:"name"`
	Types    int32  `json:"types" form:"types"`
	PageNum  int    `json:"page_num" form:"page_num"`
	PageSize int    `json:"page_size" form:"page_size"`
}
